#include<iostream>
#include<cstring> 
#include<queue>
using namespace std;

const int N=1e5+10;
int dist[N],h[N],e[N],ne[N],idx;
int dest,m;  //destination

void add(int k,int x){
	e[idx]=x,ne[idx]=h[k],h[k]=idx++;
}

int bfs(){
    memset(dist,-1,sizeof dist);
	queue<int> q;
	dist[1]=0;
	q.push(1);
	while(q.size()){
		int t=q.front();
		q.pop();
		for(int i=h[t];i!=-1;i=ne[i]){
			int j=e[i];
			if(dist[j]==-1){
				dist[j]=dist[t]+1;
				q.push(j);
			}
		}
	}
	return dist[dest];
}

int main(){
	cin>>dest>>m;
	memset(h,-1,sizeof h);
	for(int i=0;i<m;i++){
		int a,b;
		cin>>a>>b;
		add(a,b);
		}
 	cout<<bfs()<<endl;
}
 
